UserDefaults這個系統可以儲存Integers, Booleans, Strings, Arrays, Dictionaries, Date還有其他內容。但不適合保存太多數據,會導致降低應用程序的速度。
它的結構跟字典很相似,可以使用key-value去儲存他的值
let defaults = UserDefaults.standard
defaults.set(25, forKey: "Age")
defaults.set(true, forKey: "UserID")
defaults.set(3.14, forKey: "Pi")
defaults.set("Jack", forKey: "Name")
defaults.set(Date(), forKey: "LastRun")
這樣設置的時候,儲存資料將變成永久性的。在退出應用程式在重啟時,資料將仍然存在。UserDefaults也能儲存Arrays、Dictionaries,像下列程式碼
let array = ["Hello", "Swift"]
defaults.set(array, forKey: "SavedArray")
let dict = ["Name": "Jack", "Country": "Tw"]
defaults.set(dict, forKey: "SavedDict")
在取回值時,有一個重要的條件。需要先知道UserDefaults的默認值是什麼,避免與設置的值混淆
integer(forKey:) returns an integer if the key existed, or 0 if not.
bool(forKey:) returns a boolean if the key existed, or false if not.
float(forKey:) returns a float if the key existed, or 0.0 if not.
double(forKey:) returns a double if the key existed, or 0.0 if not.
object(forKey:) returns AnyObject? so you need to conditionally typecast it to your data type.
可以用以下方式取回值
let age = defaults.integer(forKey: "Age")
print(age)
//25
let useID = defaults.bool(forKey: "UserID")
print(useID)
//true
let pi = defaults.double(forKey: "Pi")
print(pi)
//3.14